<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>


    <script>

        // Promise承诺
        // Promise是ES6提供的一种异步编程解决方案(替换回调函数形式)
        // Promise看成一个容器，里面放着将来完成的异步任务
        // Promise的作用是将多个异步任务按照同步的流程表达出来

        // Promise的三种状态：
        // pending 进行中
        // fulfilled 成功
        // rejected 失败

        // Promise的两种状态改变：
        // 从 pending 改变为 fulfilled
        // 从 pending 改变为 rejected

        // Promise是一个构造函数，用于创建Promise实例对象
        // 创建Promise对象时，必须传入一个执行器函数，否则报错
        let p1 = new Promise((resolve, reject) => {// excutor执行器函数
            console.log('执行器函数调用。。。');

            // 执行器函数被调用时，会传入两个参数resolve和reject
            // console.log( resolve );// ƒ () { [native code] }
            // console.log( reject );// ƒ () { [native code] }

            // resolve 是一个函数，作用是将p1的状态从pending改变为fulfilled成功
            // resolve();

            // reject 是一个函数，作用是将p1的状态从pending改变为rejected失败
            reject();
        });

        // Promise {<状态>:结果}
        // console.log( p1 );// Promise {<pending>:undefined}
        // console.log( p1 );// Promise {<fulfilled>: undefined}
        console.log(p1);// Promise {<rejected>: undefined}

    </script>
</body>

</html>